///*******************************************************************************
// * Copyright (c) 2006, 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.tests.dialogs;
//
//import java.io.StringWriter;
//
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IFolder;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.core.resources.IResource;
//import org.eclipse.core.resources.IWorkspaceRoot;
//import org.eclipse.core.resources.ResourcesPlugin;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.jface.dialogs.IDialogSettings;
//import org.eclipse.ui.IMemento;
//import org.eclipse.ui.XMLMemento;
//import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
//import org.eclipse.ui.internal.ide.model.ResourceFactory;
//
//import junit.framework.TestCase;
//
///**
// * @since 3.3
// * 
// */
//public class UIAbstractFilteredResourcesSelectionDialog extends TestCase {
//
//	// -----------------------
//	// implementation dependent !
//
//	private static final String HISTORY_SETTINGS = "History";
//
//	private static final String DEFAULT_ROOT_NODE_NAME = "historyRootNode"; //$NON-NLS-1$
//
//	private static final String DEFAULT_INFO_NODE_NAME = "infoNode";
//
//	private static final String DIALOG_SETTINGS = "org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog"; //$NON-NLS-1$
//
//	// -----------------------
//
//	private static final String PROJECT_NAME = "FilteredResourcesTestProject";
//
//	private static final String FOLDER_NAME1 = "testFolder1";
//
//	private static final String FOLDER_NAME2 = "testFolder2";
//
//	private static final String[] HISTORY_FILES = new String[] { "file1H.txt",
//			"file2H.avi", "_FiLe4H.java", "afile4H.txt", "bfile5H.txt",
//			"cfile6H.txt" };
//
//	private static final String[] NONHISTORY_FILES = new String[] {
//			"file1.txt", "file2.avi", "_FiLe4.java", "afile4.txt",
//			"bfile5.txt", "cfile6.txt" };
//
//	// -----------------------
//
//	protected IResource[] historyResources;
//
//	protected IResource[] nonHistoryResources;
//
//	protected IProject project;
//
//	/**
//	 * A hook for subclasses - provides means to change filesystem tree.
//	 * 
//	 * @return
//	 */
//	protected String getProjectName() {
//		return PROJECT_NAME;
//	}
//
//	/**
//	 * A hook for subclasses - provides means to change filesystem tree.
//	 * 
//	 * @return
//	 */
//	protected String getFirstFolderName() {
//		return FOLDER_NAME1;
//	}
//
//	/**
//	 * A hook for subclasses - provides means to change filesystem tree.
//	 * 
//	 * @return
//	 */
//	protected String getSecondFolderName() {
//		return FOLDER_NAME2;
//	}
//
//	/**
//	 * A hook for subclasses - provides means to change filesystem tree.
//	 * 
//	 * @return
//	 */
//	protected String[] getHistoryFiles() {
//		return HISTORY_FILES;
//	}
//
//	/**
//	 * A hook for subclasses - provides means to change filesystem tree.
//	 * 
//	 * @return
//	 */
//	protected String[] getNonHistoryFiles() {
//		return NONHISTORY_FILES;
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see junit.framework.TestCase#setUp()
//	 */
//	protected void setUp() throws Exception {
//		super.setUp();
//
//		initializeProject();
//
//		// ------------------------
//		// IDialogSettings
//
//		IDialogSettings settings = IDEWorkbenchPlugin.getDefault()
//				.getDialogSettings().getSection(DIALOG_SETTINGS);
//
//		if (settings == null) {
//			settings = IDEWorkbenchPlugin.getDefault().getDialogSettings()
//					.addNewSection(DIALOG_SETTINGS);
//		}
//
//		// ------------------------
//		// XMLMemento
//
//		XMLMemento memento = XMLMemento.createWriteRoot(HISTORY_SETTINGS);
//
//		IMemento historyMemento = memento.createChild(DEFAULT_ROOT_NODE_NAME);
//
//		for (int i = 0; i < historyResources.length; i++) {
//			IResource item = historyResources[i];
//			IMemento elementMemento = historyMemento
//					.createChild(DEFAULT_INFO_NODE_NAME);
//			ResourceFactory resourceFactory = new ResourceFactory(item);
//			resourceFactory.saveState(elementMemento);
//		}
//
//		StringWriter writer = new StringWriter();
//
//		memento.save(writer);
//		settings.put(HISTORY_SETTINGS, writer.getBuffer().toString());
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see junit.framework.TestCase#tearDown()
//	 */
//	protected void tearDown() throws Exception {
//		super.tearDown();
//		finalizeProject();
//	}
//
//	private void initializeProject() throws Exception {
//		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
//		// ensure only the new project is visible
//		project = root.getProject(getProjectName());
//
//		IProject[] projects = root.getProjects();
//		for (int i = 0; i < projects.length; i++) {
//			projects[i].delete(true, null);
//		}
//
//		project.create(null);
//		project.open(null);
//		IFolder folder1 = project.getFolder(getFirstFolderName());
//		IFolder folder2 = project.getFolder(getSecondFolderName());
//		folder1.create(false, true, null);
//		folder2.create(false, true, null);
//		String[] historyFiles = getHistoryFiles();
//		if (historyFiles == null || historyFiles.length == 0) {
//			historyResources = new IResource[0];
//		} else {
//			historyResources = new IResource[historyFiles.length];
//			for (int i = 0; i < historyFiles.length; i++) {
//				IFile file = project.getFile(folder1.getProjectRelativePath()
//						.append("/" + historyFiles[i]));
//				file.create(null, false, null);
//				historyResources[i] = file;
//			}
//		}
//		String[] files = getNonHistoryFiles();
//		if (files == null || files.length == 0) {
//			nonHistoryResources = new IResource[0];
//		} else {
//			int length = files.length;
//			nonHistoryResources = new IResource[length * 2];
//			for (int i = 0; i < length; i++) {
//				IFile file = project.getFile(folder1.getProjectRelativePath()
//						.append("/" + files[i]));
//				file.create(null, false, null);
//				nonHistoryResources[i] = file;
//			}
//			for (int i = 0; i < length; i++) {
//				IFile file = project.getFile(folder2.getProjectRelativePath()
//						.append("/" + files[i]));
//				file.create(null, false, null);
//				nonHistoryResources[length + i] = file;
//			}
//		}
//	}
//
//	private void finalizeProject() throws CoreException {
//		if (project != null) {
//			project.delete(true, null);
//		}
//	}
//
//}
